home *** CD-ROM | disk | FTP | other *** search
Text File | 1994-07-26 | 6.9 KB | 202 lines | [TEXT/KAHL] |
- /* #include file for the C interface to SAT */
-
- /* Comment out under TC5: */
- /*#include <Color.h>*/
- /*#include <WindowMgr.h>*/
- /*#include <DialogMgr.h>*/
-
- // Will it work with C++ if I do like this?
- #ifdef _cplusplus
- extern "C" {
- #endif
-
- #ifndef true
- #define true 1
- #endif
-
- #ifndef false
- #define false 0
- #endif
-
- #ifndef nil
- #define nil 0L
- #endif
-
- typedef struct Face {
- char *colorData;
- short resNum;
- BitMap iconMask;
- short rowBytes; /* Note! No flags in the highest bits!*/
- struct face *next;
- RgnHandle maskRgn;
- } Face, *FacePtr;
-
- typedef struct Sprite {
- /* Variables that you should change as appropriate */
- short kind;
- Point position;
- Rect hotRect, hotRect2;
- FacePtr face;
- pascal void (*task) (struct Sprite *);
- pascal void (*hitTask) (struct Sprite *, struct Sprite *);
- pascal void (*destructTask) (struct Sprite *);
- /* SAT variables that you shouldn't change: */
- Point oldpos;
- struct Sprite *next, *prev;
- Rect r, oldr;
- /* Variables for free use by the application: */
- short layer;
- Point speed;
- short mode;
- Ptr appPtr;
- long appLong;
- } Sprite, *SpritePtr;
-
- typedef struct{
- short patternType; /* 1 = Pattern, PatHandle, 2 = PixPat, PixPatHandle */
- PixPatHandle thePat; /* or PatHandle */
- } SATPattern, *SATPatPtr, **SATPatHandle;
-
- #define UpdatePtr Ptr
-
- typedef struct {
- WindowPtr wind;
- short offSizeH, offSizeV;
- GrafPtr offScreen, backScreen;
- GDHandle offScreenGD, backScreenGD;
- long ox, oy;
- short pict, bwpict;
- Boolean fitThePICTs;
- short sorting, collision, searchWidth;
- GDHandle device;
- PixMapHandle screen;
- Rect bounds;
- short initDepth;
- pascal Boolean (*synchHook) ();
- SpritePtr sRoot;
- UpdatePtr updateRoot;
- Boolean anyMonsters;
-
- CGrafPtr ditherOff;
- GDHandle ditherOffGD;
- CGrafPtr iconPort;
- GDHandle iconPortGD;
- CGrafPtr iconPort2;
- GDHandle iconPort2GD;
- GrafPtr bwIconPort;
- } SATglobalsRec;
-
- /* Constants for ConfigureSAT */
- enum{kVPositionSort=0, kLayerSort, kNoSort};
- enum{kKindCollision=0, kForwardCollision, kBackwardCollision, kNoCollision, kForwardOneCollision};
-
- /* Global variables */
- extern SATglobalsRec gSAT; /* Most globals */
- extern FacePtr faceRoot; /* Face list */
- extern Boolean colorFlag; /* Is this Mac color capable? */
- extern pascal void (*gSoundErrorProc)(OSErr); /* Sound errors reported here */
-
- /* SAT routines */
-
- typedef pascal void (*TaskPtr)(SpritePtr);
- typedef pascal Boolean (*SynchPtr)();
- typedef pascal void (*EmergencyPtr)();
-
- /* Initialization */
- pascal void ConfigureSAT(Boolean, short, short, short);
- pascal void InitSAT (short, short, short, short);
- pascal void CustomInitSAT (short, short, Rect *, WindowPtr, GDHandle, Boolean, Boolean, Boolean, Boolean, Boolean);
- /* Maintainance, background manipulation etc. */
- pascal Boolean SATDepthChangeTest();
- pascal void SATDrawPICTs (short, short);
- pascal void PeekOffscreen();
- /* Drawing */
- pascal void SATPlotFace(FacePtr, GrafPtr, GDHandle, Point, Boolean); /*Draw a Face (icon).*/
- pascal void SATPlotFaceToScreen(FacePtr, Point, Boolean);
- pascal void SATCopyBits(GrafPtr, GrafPtr, GDHandle, Rect*, Rect*, Boolean);
- pascal void SATCopyBitsToScreen(GrafPtr, Rect, Rect, Boolean);
- pascal void SATBackChanged (Rect *); /*Tell SAT about changes in BackScreen*/
- /* SetPort replacements */
- pascal void SATGetPort (GrafPtr*, GDHandle*);
- pascal void SATSetPort (GrafPtr, GDHandle);
- pascal void SATSetPortOffScreen(); /*Use before Quick-Drawing on offScreen*/
- pascal void SATSetPortBackScreen(); /*Use before Quick-Drawing on BackScreen*/
- pascal void SATSetPortScreen(); /*Use to restore after drawing off/backscreen*/
- /* Sprite handling */
- pascal FacePtr GetFace (short);
- pascal void DisposeFace (FacePtr);
- pascal SpritePtr NewSprite (short,short,short, TaskPtr); // (*void)(SpritePtr));
- pascal SpritePtr NewSpriteAfter (SpritePtr,short,short,short, TaskPtr);
- pascal void KillSprite (SpritePtr);
- /* Animating */
- pascal void RunSAT (Boolean);
- /* Advanced special-purpose calls */
- pascal void SATInstallSynch (SynchPtr);
- pascal void SATInstallEmergency (EmergencyPtr);
- pascal void SATSetSpriteRecSize (long);
- pascal void SkipSAT();
- pascal void KillSAT(); /*Dispose of offscreen buffers to allow re-init*/
- /* Offscreen - use only if you need an *extra* offscreen buffer. These calls are likely to change in the future!*/
- pascal void SATMakeOffscreen (GrafPtr*, Rect*, GDHandle*); /*Make offscreen buffer in current screen depth and CLUT.*/
- pascal void SATDisposeOffScreen (GrafPtr*, GDHandle); /*Get rid of offscreen*/
- pascal OSErr CreateOffScreen (Rect*, short, CTabHandle, CGrafPtr*, GDHandle*); /*From Principia Offscreen*/
- pascal void DisposeOffScreen (CGrafPtr, GDHandle);/*From Principia Offscreen*/
- /* New procedures */
- pascal void SetPortMask (FacePtr);
- pascal void SetPortFace (FacePtr);
- pascal void SetPortFace2 (FacePtr);
- pascal FacePtr NewFace (Rect*);
- pascal void ChangedFace (FacePtr);
- pascal void SATSetStrings (Str255, Str255, Str255, Str255, Str255, Str255, Str255, Str255);
- pascal Boolean TrapAvailable (short);
- pascal CIconHandle SATGetCicn (short);
- pascal void SATPlotCicn (CIconHandle, GrafPtr, GDHandle, Rect*);
- pascal void SATDisposeCicn (CIconHandle);
-
- /*Utilities*/
- pascal void DrawInt (short);
- pascal void DrawLong (long);
- pascal short Rand (short);
- pascal short Rand10();
- pascal short Rand100();
- pascal void ReportStr (Str255);
- pascal Boolean QuestionStr(Str255);
- pascal void CheckNoMem (Ptr); /*If the Ptr is nil, out of memory emergency exit*/
- pascal short SATFakeAlert (Str255, Str255, Str255, Str255, short, short, short, Str255, Str255, Str255);
- pascal void SetMouse (Point);
- /* Pattern utilities */
- pascal void SATPenPat (SATPatHandle);
- pascal void SATBackPat (SATPatHandle);
- pascal SATPatHandle SATGetPat (short);
- pascal void SATDisposePat (SATPatHandle);
- /* Menu bar utilities */
- pascal void ShowMBar();
- pascal void HideMBar(WindowPtr);
- /*Sound*/
- pascal void InitSATSound(); /* No longer necessary */
- pascal void SATSoundPlay (Handle, short, Boolean); /* Play sounds with priority handling */
- pascal void SATSoundShutup(); /*Silence, dispose of sound channel*/
- pascal void SATSoundEvents(); /* Call this once in a while when not calling RunSAT often */
- pascal Boolean SATSoundDone(); /* Any sound going on?*/
- pascal Handle SATGetSound (short);
- pascal Handle SATGetNamedSound (Str255);
- pascal void SATDisposeSound (Handle);
- pascal void SATSoundOn();
- pascal void SATSoundOff();
- /* Multi-channel sound routines */
- pascal short SATSoundInitChannels (short);
- pascal Boolean SATSoundDoneChannel (short);
- pascal void SATSoundPlayChannel (Handle, short);
- pascal void SATSoundReserveChannel (short, Boolean);
- pascal void SATSoundShutupChannel (short);
- pascal void SATPreloadChannels();
- /*Experimental, likely to be renamed/removed/changed:*/
- pascal void SATSoundPlay2 (Handle, short, Boolean,Boolean);
- pascal void SATSoundPlayEasy (Handle, Boolean);
-
- // Will it work with C++ if I do like this?
- #ifdef _cplusplus
- }
- #endif
-
-